package wt.rocket.util;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class UtilFechas {

  /**
   * convierte una objeto desde un objeto java.util.Date a String en formato
   * 'día mes, año' Ejemplo: '7 Dic, 2011'
   *
   * @param date el objeto Date
   * @return el objeto Calendar
   */
  public static String getFechaTexto(Date date) {
    Calendar cal = UtilFechas.getCalendar(date);
    return UtilFechas.getFechaTextoDiaMesAñoAbreviado(cal);
  }

  /**
   * convierte un objeto java.util.Date en java.util.Calendar
   *
   * @param date el objeto Date
   * @return el objeto Calendar
   */
  public static Calendar getCalendar(Date date) {
    date.getTime();
    Calendar cal = new GregorianCalendar(date.getYear() + 1900, date.getMonth(), date.getDate());
    return cal;
  }

  /**
   * devuelve fecha en formato 'Día MesCorto, Año' Ejemplo: 7 Dic, 2011
   *
   * @param cal el calendar con la fecha a convertir
   * @return
   */
  public static String getFechaTextoDiaMesAñoAbreviado(Calendar cal) {
    return "" + getDia(cal)
            + " "
            + getMesTextoCorto(cal)
            + ", "
            + getAño(cal);
  }

  /**
   * devuelve valor de año Ejemplo: si cal contiene 07/09/2011, el método
   * devuelve el valor '2011'
   *
   * @param cal
   * @return
   */
  public static int getAño(Calendar cal) {
    return cal.get(Calendar.YEAR);
  }

  /**
   * devuelve día en número, sin ceros a la izquierda Ejemplo: si cal contiene
   * 07/10/2011, el método devuelve el valor '7'
   *
   * @param cal
   * @return
   */
  public static int getDia(Calendar cal) {
    return cal.get(Calendar.DATE);
  }

  /**
   * devuelve fecha, sólo mes en texto corto, abreviado Ejemplo: Nov
   *
   * @param cal el calendar que contiene la fecha a procesar
   * @return
   */
  public static String getMesTextoCorto(Calendar cal) {
    int month = cal.get(Calendar.MONTH) + 1;
    String mes = getMesTextoCorto(month);
    return "" + mes;
  }

  /**
   * devuelve dia de semana en texto corto: Ej: Ene, Feb, Mar,... Dic
   *
   * @param mes número de mes en número: 1:ene, ..., 12:dic
   * @return
   */
  public static String getMesTextoCorto(int mes) {
    String mesTexto = "";
    if (mes == 1) {
      mesTexto = "Ene";
    } else if (mes == 2) {
      mesTexto = "Feb";
    } else if (mes == 3) {
      mesTexto = "Mar";
    } else if (mes == 4) {
      mesTexto = "Abrl";
    } else if (mes == 5) {
      mesTexto = "May";
    } else if (mes == 6) {
      mesTexto = "Jun";
    } else if (mes == 7) {
      mesTexto = "Jul";
    } else if (mes == 8) {
      mesTexto = "Ago";
    } else if (mes == 9) {
      mesTexto = "Sep";
    } else if (mes == 10) {
      mesTexto = "Oct";
    } else if (mes == 11) {
      mesTexto = "Nov";
    } else if (mes == 12) {
      mesTexto = "Dic";
    }
    return mesTexto;
  }
}
